最近在做一个播客长内容可调用性实验,有点像播客界的 agent,或者说是一个基于语义检索的问答助手(可定位具体表达),还支持听众反向反馈给创作团队——借用的是「海外独角兽」的播客内容,在此仅作实验&分享~


具体的想象在两个多月前的这篇文章里有写过——没错,现在的我可以实现它了!虽然只是很简单的 MVP…还是有检索结果的准确性问题存在的。
一开始我以为这(MVP)是一个挺直观的事情。
字幕已经有时间戳了,点哪一句,就跳到那一刻开始播放。页面内容多一点没关系,用鼠标滚轮滑一滑,再选择想收听的起始点。
结果现实完全不是这样。
第一个让我觉得「不对劲」的地方,是字幕跳转。
在调试效果的时候,和一个很奇怪的现象纠缠上了。
Claude 反复强调,代码逻辑看起来是完全正确的——甚至它还自己跑去浏览器测试了呢,但我屡次调试界面——不管点哪儿,播放都回到了音频开头。
跑个题——哎呀,看编程 agent 调试界面真的…本人母性大发,看到鼠标点击那一下(还有「Agent is needing your input」🥹 不过「getting DOM」有点出戏哈哈哈哈哈)——哎哟哟哟太可爱了!嗯,这里说的是 Antigravity,因为(我目前用的) Claude 跑不到原生浏览器上,它只能借助于 MCP 操作浏览器…这不,我解锁了下图的用法👇

我这才懂,Antigravity 能直接操作浏览器是因为它能用 Playwright 这款自动化工具来控制浏览器,那么,Claude 的 MCP 接上 Playwright,会是什么样的效果呢?拭目以待。OK,话题继续——
我当时就懵了,甚至质疑它是不是骗我,然后想,是不是时间戳的问题?看了 json 字幕文件,确实没问题。还打开开发工具去看相应结果,和我调试的结果是一致的…
折腾了好久,Claude 才幡然醒悟,它问我,我是怎么打开服务器的,打开了什么服务器。
我说我让 Antigravity 打开的服务器…哦,Antigravity 打开的端口,并没有用支持 range 的服务器。
如果服务器不支持从内容中间开始读字节,所谓的「从某个时间点播放」,在系统层面根本不存在。
当时给气了半天,什么?range 是什么鬼?搞了半天,不过是「换个 HTTP 服务器」的问题?:(
嗯,支持 range 的 HTTP server——这对我来说是一个新鲜概念,学到了,真有意思。
字幕问题解决之后,还有第二个不适感要解决。
页面滚动问题。
当我滑动鼠标滚轮时,只有几个特定区域的内容是可以滚动的。只要光标不在这些区域里,整个页面就完全动不了,要让它动,必须去旁边拉进度条——太不符合常理了。
我把这个情况描述给了 Claude,然后给出了我的修改期待,我说的是:我希望在滑动鼠标滚轮时,哪怕光标不在这些可滚动区域里,整个页面也能够滚动。
它帮我改了,改了两次,都没有成功,然后我又去找 Antigravity。
它的修改确实让整个页面都可以滚动了——从功能上看,这个问题已经被解决。
但当我真的开始用的时候——
滚动速度慢得让我有点崩溃,更像是一个九十岁老人在走路(对不起,比喻有点刻板印象,但当时我就是这么比喻的…实在是没辙了,把话说成这样…),甚至可能比乌龟还慢,完全不像浏览器的原生滚动。
于是我又回去找 Claude,把现在的情况描述给它。


这下子,Claude 就立刻明白了。

它检查了代码,发现有一行代码把滚动做成了动画效果。把那一行删掉之后,整个页面的滚动立刻恢复成了原生浏览器的速度和手感。
经历以上两件事情,我意识到,人类(我)以为的「问题描述清晰」,在 agent 听来未必如此,也就是,问题如何变得「可被(编程 agent)看见」——
比如说滚动问题,我的描述可能将问题指向了滚动区域、页面结构、事件传递、浏览器默认行为等,对 Claude 来说没有一个明显的切入点。
而在 Antigravity 修改之后,滚动有了明确的指向,它变成了一件能被显式接管的事情,行为的指向性更明确。
一旦问题(在 agent 看来)变得清晰,修复反而只需要几秒钟。
所以,如何压缩问题的搜索空间——是我们这些 non-technical 行业背景的人在做 vibe coding 时需要学会的一门功课。
而关于 range server,那就是偏后端的知识了。也就是说我想要的实现理论上无论在哪个本地端口预览应该都是一样的,问题在于用的是哪一个服务器,而如果服务器没选对,预览同样的代码会有不同的效果——这是我在启动服务器前需要和编程 agent 明确的问题。
恨我当年咋不多学一点呢?可是…从哪儿学起呢?又因何而学呢?嗯…是问题嚯。🧐
P.S. 以上构想,其实只要有想法(实现什么产品、界面长什么模样、需要有哪些功能、功能之间有什联系/各个功能点如何交互…哪怕一开始只是有个简单的需求,一旦开始,后面的一切将会慢慢浮现,而动手的人,比如我——就会被动地思考,如何处理过程中遇到的种种…),借助编程 agent 很容易构建 MVP,重点是其中遇到的问题和如何解决…关键还是在于,go get it done!